/**
 * 删除zk key任务
 */
import ZkClient from "../client/ZkClient.mjs";

export default class ZKDelKeyTask {
    static _interval = 100; // 间隔100毫秒
    ttl;
    key;
    _timer;

    constructor(zkClient, key, ttl) {
        this.ttl = ttl;
        this.key = key;
    }

    start(cb) {
        const _this = this;
        _this._timer = setInterval(() => {
            if (_this.ttl < 0 || _this.ttl === 0) {
                if (cb) cb();
            } else {
                _this.ttl -= ZKDelKeyTask._interval;
            }

        }, ZKDelKeyTask._interval);
    }

    /**
     * 更新锁有效时间
     * @param ttl 失效时间 秒
     */
    modifyExpire(ttl) {
        this.ttl = ttl;
    }

    stop() {
        clearInterval(this._timer);
    }
}
